#define LAND_GRAPHICS_CORE

#include "init.h"

static struct {
	LandGraphics* config;
	LandStdBackend* backend;
}ctx = { 0 };

int
landInitStdContext(LandGraphics* config, LandStdBackend* backend) {
	ctx.config = config;
	ctx.backend = backend;
	return 0;
}

LAND_GRAPHICS_API LandShader*
landNewStdShader(LandStdShader e) {
	return ctx.backend->newShader(e);
}



LAND_GRAPHICS_API unsigned
landPushStdVertexBox(LandVertex* vertex, LandVector* size,
	LandVector* color, unsigned indexOffset, LandMatrix* transform) {
	//LandFloat x = size->x * 0.5f;
	//LandFloat y = size->y * 0.5f;
	//LandFloat z = size->y * 0.5f;
	//LandPoint vs[] = {
	//	{
	//		{-x, -y, z, 1.f},  *color,
	//		{0.f, 0.f, 0.f, 0.f}, {0.f, 0.f, 1.f, 1.f},
	//	},
	//	{
	//		{x, -y, z, 1.f}, *color,
	//		{0.f, 1.f, 0.f, 0.f}, {0.f, 0.f, 1.f, 1.f},
	//	},
	//	{
	//		{ -x, y, z, 1.f}, *color,
	//		{1.f, 0.f, 0.f, 0.f}, {0.f, 0.f, 1.f, 1.f},
	//	},
	//	{
	//		{x, y, z, 1.f}, *color,
	//		{1.f, 1.f, 0.f, 0.f}, {0.f, 0.f, 1.f, 1.f},
	//	},
	//			{
	//		{-x, -y, -z, 1.f},  *color,
	//		{0.f, 0.f, 0.f, 0.f}, {0.f, 0.f, 1.f, 1.f},
	//	},
	//	{
	//		{x, -y, -z, 1.f}, *color,
	//		{0.f, 1.f, 0.f, 0.f}, {0.f, 0.f, 1.f, 1.f},
	//	},
	//	{
	//		{ -x, y, -z, 1.f}, *color,
	//		{1.f, 0.f, 0.f, 0.f}, {0.f, 0.f, 1.f, 1.f},
	//	},
	//	{
	//		{x, y, -z, 1.f}, *color,
	//		{1.f, 1.f, 0.f, 0.f}, {0.f, 0.f, 1.f, 1.f},
	//	},
	//};	
	//unsigned indexs[] = {
	//	0, 1, 2, 1, 2, 3,
	//	4, 5, 6, 5, 6, 7,
	//	0, 4, 5, 0, 1, 5,
	//	0, 2, 4, 2, 4, 6,
	//	2, 3, 6, 3, 6, 7,
	//	1, 3, 5, 3, 5, 7,
	//};
	//if (transform) {
	//	for (unsigned i = 0; i < 8; i++) {
	//		landVectorMulMatrix(&vs[i].position, transform);
	//	}
	//}
	//for (unsigned i = 0; i < 36; i++) {
	//	indexs[i] += indexOffset;
	//}
	//landPushVertexData(vertex, vs, 8);
	//landPushVertexIndexs(vertex, indexs, 36);
	return 36;
}
